package skyinline.component;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JButton;

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.ImageIcon;

/**
 *	JOptionPane
 *	다양한 용도에 사용할 수 있도록 미리 정의된 대화상자를 의미
 *	메세지 표시					: showMessageDialog
 *	사용자의 확인을 물음		: showConfirmDialog
 *	사용자의 입력을 받음		: showInputDialog
 *	위 세가지를 모두 함 		: showOptionDialog
 *
 *	JoptionPane 은 static 메서드를 가지고 있음
 *	따라서, 객체 생성없이 바로 호출해서 사용가능
 *	JFrame 에 종속/비종속적 대화상자를 작성 가능
 *	대화상자에는 기본적으로 4가지 아이콘을 제공함
 *
 *	showMessage
 *		간단한 메세지를 출력
 *		showMessageDialog(부모프레임, 메세지, 제목, 종류)
 *		메세지 종류는 다음과 같음
 *			JOptionPane.ERROR_MESSAGE
 *			JOptionPane.INFORMATION_MESSAGE
 *			JOptionPane.WARNING_MESSAGE
 *			JOptionPane.QUESTION_MESSAGE
 *			JOptionPane.PLAIN_MESSAGE
 *
 *	showConfirmDialog
 *		사용자의 확인을 물을 수 있음
 *		이 대화상자에서는 yes, no, cancel, ok 버튼 등을 표시
 *			JOptionPane.YES_OPTION
 *			JOptionPane.NO_OPTION
 *			JOptionPane.CANCEL_OPTION
 *			JOptionPane.OK_OPTION
 *			JOptionPane.CLOSED_OPTION
 *			CLOSE_OPTION 는 대화상자의 'X' 단추를 클릭했을 때 반환되는 정수값임
 *
 *	showInputDialog
 *		사용자로부터 입력을 받게 하는 대화상자를 표시
 *		값을 입력하고 OK 를 누르면 : 입력값 전달
 *		값을 입력하고 CANCEL 을 누르면 : null 값 전달
 *		값을 입력안하고 OK를 누르면 : 공백값 전달
 */

public class J20_BasicComponent extends JFrame {

	private JPanel contentPane;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					J20_BasicComponent frame = new J20_BasicComponent();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public J20_BasicComponent() {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 300);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		contentPane.setLayout(new BorderLayout(0, 0));
		setContentPane(contentPane);
		
		JButton btnNewButton = new JButton("Show Message");
		btnNewButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				JOptionPane.showMessageDialog(null, "정보 대화상자", "showMessage",
						JOptionPane.INFORMATION_MESSAGE);
			
				JOptionPane.showMessageDialog(null, "경고 대화상자", "showMessage",
						JOptionPane.WARNING_MESSAGE);
				
				JOptionPane.showMessageDialog(null, "질문 대화상자", "showMessage",
						JOptionPane.QUESTION_MESSAGE);
				
				JOptionPane.showMessageDialog(null, "오류 대화상자", "showMessage",
						JOptionPane.ERROR_MESSAGE);
				
				JOptionPane.showMessageDialog(null, "단순 대화상자", "showMessage",
						JOptionPane.PLAIN_MESSAGE);
			}
		});
		contentPane.add(btnNewButton, BorderLayout.NORTH);
		
		JButton btnNewButton_1 = new JButton("New button");
		contentPane.add(btnNewButton_1, BorderLayout.WEST);
		
		JButton btnNewButton_2 = new JButton("confirmMessage");
		btnNewButton_2.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				JOptionPane.showConfirmDialog(null, "계속하시겠어요?", "지금 확인중", JOptionPane.YES_NO_OPTION,
						JOptionPane.WARNING_MESSAGE);
				
				int result = JOptionPane.showConfirmDialog(null, "애인이 있으신가요?", "지금 확인중", JOptionPane.YES_NO_CANCEL_OPTION,
						JOptionPane.WARNING_MESSAGE);
				
				if ( result == JOptionPane.YES_OPTION )
					JOptionPane.showMessageDialog(null, "대박!");
				else if ( result == JOptionPane.NO_OPTION )
					JOptionPane.showMessageDialog(null, "그냥 그렇네");
				else if ( result == JOptionPane.CANCEL_OPTION )
					JOptionPane.showMessageDialog(null, "싫음 마러잇!");
			}
		});
		contentPane.add(btnNewButton_2, BorderLayout.CENTER);
		
		JButton btnNewButton_3 = new JButton("New button");
		contentPane.add(btnNewButton_3, BorderLayout.EAST);
		
		JButton btnNewButton_4 = new JButton("inputMessage");
		btnNewButton_4.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				String name = JOptionPane.showInputDialog(null, "당신의 이름을 입력하세요", "입력하세요",
						JOptionPane.INFORMATION_MESSAGE);
				System.out.println( name );
			}
		});
		btnNewButton_4.setIcon(new ImageIcon(J20_BasicComponent.class.getResource("/image/new.png")));
		contentPane.add(btnNewButton_4, BorderLayout.SOUTH);
	}

}
